/* 
 * Copyright 2013-2020 Modeliosoft
 * 
 * This file is part of Modelio.
 * 
 * Modelio is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * Modelio is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with Modelio.  If not, see <http://www.gnu.org/licenses/>.
 * 
 */
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2015.12.02 at 02:29:48 PM CET
//
package org.modelio.bpmnxml.model;

import java.util.ArrayList;
import java.util.List;
import com.modeliosoft.modelio.javadesigner.annotations.objid;
import jakarta.xml.bind.JAXBElement;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlElementRef;
import jakarta.xml.bind.annotation.XmlType;
import javax.xml.namespace.QName;

/**
 * <p>Java class for tProcess complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="tProcess">
 * &lt;complexContent>
 * &lt;extension base="{http://www.omg.org/spec/BPMN/20100524/MODEL}tCallableElement">
 * &lt;sequence>
 * &lt;element ref="{http://www.omg.org/spec/BPMN/20100524/MODEL}auditing" minOccurs="0"/>
 * &lt;element ref="{http://www.omg.org/spec/BPMN/20100524/MODEL}monitoring" minOccurs="0"/>
 * &lt;element ref="{http://www.omg.org/spec/BPMN/20100524/MODEL}property" maxOccurs="unbounded" minOccurs="0"/>
 * &lt;element ref="{http://www.omg.org/spec/BPMN/20100524/MODEL}laneSet" maxOccurs="unbounded" minOccurs="0"/>
 * &lt;element ref="{http://www.omg.org/spec/BPMN/20100524/MODEL}flowElement" maxOccurs="unbounded" minOccurs="0"/>
 * &lt;element ref="{http://www.omg.org/spec/BPMN/20100524/MODEL}artifact" maxOccurs="unbounded" minOccurs="0"/>
 * &lt;element ref="{http://www.omg.org/spec/BPMN/20100524/MODEL}resourceRole" maxOccurs="unbounded" minOccurs="0"/>
 * &lt;element ref="{http://www.omg.org/spec/BPMN/20100524/MODEL}correlationSubscription" maxOccurs="unbounded" minOccurs="0"/>
 * &lt;element name="supports" type="{http://www.w3.org/2001/XMLSchema}QName" maxOccurs="unbounded" minOccurs="0"/>
 * &lt;/sequence>
 * &lt;attribute name="processType" type="{http://www.omg.org/spec/BPMN/20100524/MODEL}tProcessType" default="None" />
 * &lt;attribute name="isClosed" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
 * &lt;attribute name="isExecutable" type="{http://www.w3.org/2001/XMLSchema}boolean" />
 * &lt;attribute name="definitionalCollaborationRef" type="{http://www.w3.org/2001/XMLSchema}QName" />
 * &lt;anyAttribute processContents='lax' namespace='##other'/>
 * &lt;/extension>
 * &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 */
@objid ("2bc22156-7231-497f-9335-ea2060744f7c")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "tProcess", propOrder = {
    "auditing",
    "monitoring",
    "property",
    "laneSet",
    "flowElement",
    "artifact",
    "resourceRole",
    "correlationSubscription",
    "supports"
})
public class TProcess extends TCallableElement {
    @objid ("2a68c4e9-e75e-4595-a87e-b7d25d3fe2d1")
    @XmlAttribute(name = "isClosed")
    protected Boolean isClosed;

    @objid ("551ea93a-4634-4401-b54a-4b4a9bb50846")
    @XmlAttribute(name = "isExecutable")
    protected Boolean isExecutable;

    @objid ("9d49827b-d655-4da8-bbea-826ae69df68a")
    @XmlAttribute(name = "processType")
    protected TProcessType processType;

    @objid ("6e29490d-32a6-4473-b152-a8d8240dcfce")
    protected TAuditing auditing;

    @objid ("8afa3c58-b2d5-486a-b65d-e2b829a133d5")
    protected TMonitoring monitoring;

    @objid ("2ebc79f6-4a29-473b-9e21-7181ead0e2b5")
    protected List<TProperty> property;

    @objid ("5b3e80b1-a30e-4227-aeb2-2e9820bda303")
    protected List<TLaneSet> laneSet;

    @objid ("b39cb8c2-882c-424e-9656-bec648d6584a")
    @XmlElementRef(name = "flowElement", namespace = "http://www.omg.org/spec/BPMN/20100524/MODEL", type = JAXBElement.class, required = false)
    protected List<JAXBElement<? extends TFlowElement>> flowElement;

    @objid ("e9b0906b-921d-414c-a66b-87165681f4d7")
    @XmlElementRef(name = "artifact", namespace = "http://www.omg.org/spec/BPMN/20100524/MODEL", type = JAXBElement.class, required = false)
    protected List<JAXBElement<? extends TArtifact>> artifact;

    @objid ("713ca009-6409-4444-af2f-36c8b9d2c8d9")
    @XmlElementRef(name = "resourceRole", namespace = "http://www.omg.org/spec/BPMN/20100524/MODEL", type = JAXBElement.class, required = false)
    protected List<JAXBElement<? extends TResourceRole>> resourceRole;

    @objid ("6a49beb3-ac1e-40bb-b802-42ba667ba7d5")
    protected List<TCorrelationSubscription> correlationSubscription;

    @objid ("dce49839-d0f9-4b15-a49d-3392acc83ae8")
    protected List<QName> supports;

    @objid ("4822caed-18e5-4585-a077-e505294148bd")
    @XmlAttribute(name = "definitionalCollaborationRef")
    protected QName definitionalCollaborationRef;

    /**
     * Gets the value of the auditing property.
     * @return
     * possible object is
     * {@link TAuditing }
     */
    @objid ("364d04ec-9e3f-431e-81c6-57cddea42522")
    public TAuditing getAuditing() {
        return this.auditing;
    }

    /**
     * Sets the value of the auditing property.
     * @param value allowed object is
     * {@link TAuditing }
     */
    @objid ("5f14fa70-41cd-4286-b7ea-0d3c32acc914")
    public void setAuditing(TAuditing value) {
        this.auditing = value;
    }

    /**
     * Gets the value of the monitoring property.
     * @return
     * possible object is
     * {@link TMonitoring }
     */
    @objid ("bf0c20ea-ad56-4eaf-94de-e9dc649ec4f9")
    public TMonitoring getMonitoring() {
        return this.monitoring;
    }

    /**
     * Sets the value of the monitoring property.
     * @param value allowed object is
     * {@link TMonitoring }
     */
    @objid ("ca1dd300-4494-439e-81ea-7ea1faea45c9")
    public void setMonitoring(TMonitoring value) {
        this.monitoring = value;
    }

    /**
     * Gets the value of the property property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the property property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     * getProperty().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link TProperty }
     */
    @objid ("00a3777b-26bb-4a65-81ab-84414f274d40")
    public List<TProperty> getProperty() {
        if (this.property == null) {
            this.property = new ArrayList<>();
        }
        return this.property;
    }

    /**
     * Gets the value of the laneSet property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the laneSet property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     * getLaneSet().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link TLaneSet }
     */
    @objid ("a35e65d2-b825-44ee-b311-ca22e3ec79fd")
    public List<TLaneSet> getLaneSet() {
        if (this.laneSet == null) {
            this.laneSet = new ArrayList<>();
        }
        return this.laneSet;
    }

    /**
     * Gets the value of the flowElement property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the flowElement property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     * getFlowElement().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link JAXBElement }{@code <}{@link TFlowElement }{@code >}
     * {@link JAXBElement }{@code <}{@link TTask }{@code >}
     * {@link JAXBElement }{@code <}{@link TCallChoreography }{@code >}
     * {@link JAXBElement }{@code <}{@link TExclusiveGateway }{@code >}
     * {@link JAXBElement }{@code <}{@link TChoreographyTask }{@code >}
     * {@link JAXBElement }{@code <}{@link TSubProcess }{@code >}
     * {@link JAXBElement }{@code <}{@link TServiceTask }{@code >}
     * {@link JAXBElement }{@code <}{@link TSendTask }{@code >}
     * {@link JAXBElement }{@code <}{@link TSubChoreography }{@code >}
     * {@link JAXBElement }{@code <}{@link TIntermediateThrowEvent }{@code >}
     * {@link JAXBElement }{@code <}{@link TTransaction }{@code >}
     * {@link JAXBElement }{@code <}{@link TStartEvent }{@code >}
     * {@link JAXBElement }{@code <}{@link TEventBasedGateway }{@code >}
     * {@link JAXBElement }{@code <}{@link TDataStoreReference }{@code >}
     * {@link JAXBElement }{@code <}{@link TComplexGateway }{@code >}
     * {@link JAXBElement }{@code <}{@link TSequenceFlow }{@code >}
     * {@link JAXBElement }{@code <}{@link TBoundaryEvent }{@code >}
     * {@link JAXBElement }{@code <}{@link TEvent }{@code >}
     * {@link JAXBElement }{@code <}{@link TAdHocSubProcess }{@code >}
     * {@link JAXBElement }{@code <}{@link TManualTask }{@code >}
     * {@link JAXBElement }{@code <}{@link TImplicitThrowEvent }{@code >}
     * {@link JAXBElement }{@code <}{@link TDataObject }{@code >}
     * {@link JAXBElement }{@code <}{@link TUserTask }{@code >}
     * {@link JAXBElement }{@code <}{@link TBusinessRuleTask }{@code >}
     * {@link JAXBElement }{@code <}{@link TCallActivity }{@code >}
     * {@link JAXBElement }{@code <}{@link TIntermediateCatchEvent }{@code >}
     * {@link JAXBElement }{@code <}{@link TParallelGateway }{@code >}
     * {@link JAXBElement }{@code <}{@link TEndEvent }{@code >}
     * {@link JAXBElement }{@code <}{@link TDataObjectReference }{@code >}
     * {@link JAXBElement }{@code <}{@link TScriptTask }{@code >}
     * {@link JAXBElement }{@code <}{@link TInclusiveGateway }{@code >}
     * {@link JAXBElement }{@code <}{@link TReceiveTask }{@code >}
     */
    @objid ("ebf9d02e-5b06-4ef8-9330-d788652b855d")
    public List<JAXBElement<? extends TFlowElement>> getFlowElement() {
        if (this.flowElement == null) {
            this.flowElement = new ArrayList<>();
        }
        return this.flowElement;
    }

    /**
     * Gets the value of the artifact property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the artifact property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     * getArtifact().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link JAXBElement }{@code <}{@link TAssociation }{@code >}
     * {@link JAXBElement }{@code <}{@link TGroup }{@code >}
     * {@link JAXBElement }{@code <}{@link TArtifact }{@code >}
     * {@link JAXBElement }{@code <}{@link TTextAnnotation }{@code >}
     */
    @objid ("ded4eafa-7901-4494-8fae-7f580abd0fe4")
    public List<JAXBElement<? extends TArtifact>> getArtifact() {
        if (this.artifact == null) {
            this.artifact = new ArrayList<>();
        }
        return this.artifact;
    }

    /**
     * Gets the value of the resourceRole property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the resourceRole property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     * getResourceRole().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link JAXBElement }{@code <}{@link TResourceRole }{@code >}
     * {@link JAXBElement }{@code <}{@link THumanPerformer }{@code >}
     * {@link JAXBElement }{@code <}{@link TPerformer }{@code >}
     * {@link JAXBElement }{@code <}{@link TPotentialOwner }{@code >}
     */
    @objid ("8d2822ad-94ee-44b6-a1d8-027e1fc9771c")
    public List<JAXBElement<? extends TResourceRole>> getResourceRole() {
        if (this.resourceRole == null) {
            this.resourceRole = new ArrayList<>();
        }
        return this.resourceRole;
    }

    /**
     * Gets the value of the correlationSubscription property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the correlationSubscription property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     * getCorrelationSubscription().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link TCorrelationSubscription }
     */
    @objid ("b50f922d-8919-482d-8c0d-1a2a10d681a1")
    public List<TCorrelationSubscription> getCorrelationSubscription() {
        if (this.correlationSubscription == null) {
            this.correlationSubscription = new ArrayList<>();
        }
        return this.correlationSubscription;
    }

    /**
     * Gets the value of the supports property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the supports property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     * getSupports().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link QName }
     */
    @objid ("4da735c5-0a70-4799-a524-f4eb40229c1c")
    public List<QName> getSupports() {
        if (this.supports == null) {
            this.supports = new ArrayList<>();
        }
        return this.supports;
    }

    /**
     * Gets the value of the processType property.
     * @return
     * possible object is
     * {@link TProcessType }
     */
    @objid ("ccfaf759-cdf0-456f-a7b9-63c4e7ad0799")
    public TProcessType getProcessType() {
        if (this.processType == null) {
            return TProcessType.NONE;
        } else {
            return this.processType;
        }
        
    }

    /**
     * Sets the value of the processType property.
     * @param value allowed object is
     * {@link TProcessType }
     */
    @objid ("114ea58f-2f0d-4df8-a2f7-3799772d33ca")
    public void setProcessType(TProcessType value) {
        this.processType = value;
    }

    /**
     * Gets the value of the isClosed property.
     * @return
     * possible object is
     * {@link Boolean }
     */
    @objid ("51f126e5-0475-4e19-88aa-df7f5617e930")
    public boolean isIsClosed() {
        if (this.isClosed == null) {
            return false;
        } else {
            return this.isClosed;
        }
        
    }

    /**
     * Sets the value of the isClosed property.
     * @param value allowed object is
     * {@link Boolean }
     */
    @objid ("67d3a8d8-cd55-4989-8766-5dd541601c0a")
    public void setIsClosed(Boolean value) {
        this.isClosed = value;
    }

    /**
     * Gets the value of the isExecutable property.
     * @return
     * possible object is
     * {@link Boolean }
     */
    @objid ("11beea9f-bb0a-4306-8cbb-a9d6d865a4ef")
    public Boolean isIsExecutable() {
        return this.isExecutable;
    }

    /**
     * Sets the value of the isExecutable property.
     * @param value allowed object is
     * {@link Boolean }
     */
    @objid ("d5484ee3-277d-434c-850a-592342a22eee")
    public void setIsExecutable(Boolean value) {
        this.isExecutable = value;
    }

    /**
     * Gets the value of the definitionalCollaborationRef property.
     * @return
     * possible object is
     * {@link QName }
     */
    @objid ("5d9f2572-86b4-4f4f-a571-68cf3e19fcd4")
    public QName getDefinitionalCollaborationRef() {
        return this.definitionalCollaborationRef;
    }

    /**
     * Sets the value of the definitionalCollaborationRef property.
     * @param value allowed object is
     * {@link QName }
     */
    @objid ("43e35f31-30ab-496d-9582-368441766604")
    public void setDefinitionalCollaborationRef(QName value) {
        this.definitionalCollaborationRef = value;
    }

}
